package com.heima.leetcode.datastructure.hashtable;

import org.springframework.util.StringUtils;

import java.util.Arrays;

/**
 * <strong>判断两个数是否为字母异位词 242</strong>
 * @author 勾新杰
 * @version 1.0
 * @date 2024/9/26 21:21
 */
public class IsAnagram {

    /**
     * <h3>方法一</h3>
     * 转成数组，用数组的API进行排序，比较两个数组是否相等
     * @param s1 字符串1
     * @param s2 字符串2
     * @return 是异位词返回true，不是异位词返回false
     */
    public static boolean isAnagram1(String s1, String s2) {
        char[] array1 = s1.toCharArray();
        char[] array2 = s2.toCharArray();
        Arrays.sort(array1);
        Arrays.sort(array2);
        return Arrays.equals(array1, array2);
    }

    /**
     * <h3>方法二</h3>
     * 创建两个长度为26的数组，分别统计两个字符串中每个字母出现的次数，比较两个数组是否相等
     * @param s1 字符串1
     * @param s2 字符串2
     * @return 是异位词返回true，不是异位词返回false
     */
    public static boolean isAnagram2(String s1, String s2) {
        int[] array1 = new int[26];
        int[] array2 = new int[26];
        char[] charArray1 = s1.toCharArray();
        char[] charArray2 = s2.toCharArray();
        if (s1.length() != s2.length()){
            return false;
        }
        for (char c : charArray1) {
            array1[c - 'a']++;
        }
        for (char c : charArray2) {
            array2[c - 'a']++;
        }
        return Arrays.equals(array1, array2);
    }
}
